public class TypeConversion {
    public static void main(String[] args) {
        //隐式
//        int a = 100;
//    long b = a;  // 自动转换为long
//    float c = b; // 自动转换为float
//
//        long b = 1000000000000000000L;
//        a = (int)b;// long -> int,需要强转,但会溢出，输出结果为-1486618624
//        System.out.println(b);
//        System.out.println(a);
//
//        double x = 10.5;
//        int y = (int) x; // y = 10（小数部分截断）
//        System.out.println(x);
//        System.out.println(y);

        //byte b1 = 100; // 编译通过，100没有超过byte的范围，编译器隐式将100转换为byte
//    byte b2 = 257; // 编译失败，257超过了byte的数据范围，有数据丢失


//    目标类型 变量名 = (目标类型) 要转换的变量;


//        boolean flag = true;
//        a = flag; // 编译失败：类型不兼容
//        flag = a; // 编译失败：类型不兼容


/*        byte b = 10;
        int result = b + 20;     // 正确，b为byte型，范围小，20为int型，范围大，byte被自动提升为int，结果为int
        byte b2 = (byte)(b + 20); // (b + 20)结果为int型，范围大，需将int赋值给b2，b2是byte型，范围小，需强制转换

        System.out.println(result);
        System.out.println(b2);*/

/*        byte a1 = 10;
        byte a2 = 20;
        byte a3 = (byte)(a1 + a2);
//        byte a3 = a1 + a2; // 报错
        System.out.println(a3);*/

        byte b1 = 123;
        byte b2 = 125;
        byte b3 = (byte)(b1 + b2); // 发生截断，输出结果为-8
        int b4 = b1 + b2; // 不发生截断，输出结果为248

        int num = 100;
        String str1 = num + "";
        System.out.println(str1);

        String str2 = String.valueOf(num);

        String str = "1000";
        int num1 = Integer.parseInt(str);
        System.out.println(num1);
    }
}
